package vip.ola.core.entity.code;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import static vip.ola.core.common.util.LocalDateTimeUtil.PATTERN_DATE_TIME;

/**
 * <p>
 * 二维码订单信息
 * </p>
 *
 * @author faker
 * @since 2020-03-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_code_order")
public class CodeOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 二维码id
     */
    private Long codeId;

    /**
     * 二维码类型,1=支付宝,2=微信
     */
    private Integer codeType;

    /**
     * 二维码名称
     */
    private String codeName;

    /**
     * 收款三方系统id
     */
    private String collThirdId;

    /**
     * 所属人id
     */
    private Long userId;

    /**
     * 所属人用户名
     */
    private String username;

    /**
     * 所属码商id
     */
    private Long codeBusId;

    /**
     * 所属代理id
     */
    private Long agentId;

    private Integer productId;
    private String productName;

    /**
     * 订单金额,单位元
     */
    private BigDecimal amount;

    /**
     * 如果金额修改过,此字段记录修改前的金额
     */
    private BigDecimal oldAmount;

    /**
     * 订单状态,-2-订单过期,-1-支付失败,0-订单生成,1-支付中,2-支付成功,3-业务完成
     */
    private Integer status;

    /**
     * 码商订单号
     */
    private String codeBusNo;

    /**
     * 本系统订单号
     */
    private String orderNo;

    /**
     * 商户订单号
     */
    private String mchOrderNo;

    private Long mchId;
    private String mchName;

    /**
     * 用户费率
     */
    private BigDecimal userRate;

    /**
     * 代理商利润,单位元
     */
    private BigDecimal userProfit;

    /**
     * 代理费率
     */
    private BigDecimal agentRate;

    /**
     * 代理商利润,单位元
     */
    private BigDecimal agentProfit;

    /**
     * 码商费率
     */
    private BigDecimal codeBusRate;

    /**
     * 码商利润,单位元
     */
    private BigDecimal codeBusProfit;

    /**
     * 确认收款时间
     */
    @JsonFormat(pattern= PATTERN_DATE_TIME)
    private LocalDateTime confirmTime;

    /**
     * 客户ip
     */
    private String clientIp;

    @TableField(exist = false)
    private Integer ipNum;

    /**
     * 是否扫码:0-否,1-是
     */
    private Integer scan;

    /**
     * 操作阶段:0=生成订单,1=打开订单页,2=扫码,3=点击支付跳转按钮,4=进入app支付,5=复制转账
     */
    private Integer operatePhase;

    /**
     * 操作系统类型:1=android,2=ios,3=其他
     */
    private Integer osType;

    /**
     * 会员设备信息
     */
    private String device;

    private String remark;

    /**
     * 创建者ID
     */
    private Long createId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern= PATTERN_DATE_TIME)
    @DateTimeFormat(pattern = PATTERN_DATE_TIME)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern= PATTERN_DATE_TIME)
    @DateTimeFormat(pattern = PATTERN_DATE_TIME)
    private LocalDateTime updateTime;


}
